<?php
/**
 * This file is part of webman.
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the MIT-LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @author    walkor<walkor@workerman.net>
 * @copyright walkor<walkor@workerman.net>
 * @link      http://www.workerman.net/
 * @license   http://www.opensource.org/licenses/mit-license.php MIT License
 */

use support\Log;
use support\Request;
use app\process\Http;

global $argv;

return [
    /*'websocket' => [
        'handler' => \app\process\WebSocketProcess::class,
        'listen' => '',
        'count' => 1,
        'user' => '',
        'group' => '',
        'reusePort' => false,
        'eventLoop' => '',
        'context' => [],
        'constructor' => []
    ],*/
    // websocket_test 为进程名称
    // websocket_test 为进程名称
    'websocket_test' => [
        // 这里指定进程类
        'handler' => app\Pusher::class,
        // 监听的协议 ip 及端口 （可选）
        'listen'  => 'websocket://0.0.0.0:8888',
        // 进程数 （可选，默认1）
        'count'   => 2,
        // 进程运行用户 （可选，默认当前用户）
        'user'    => '',
        // 进程运行用户组 （可选，默认当前用户组）
        'group'   => '',
        // 当前进程是否支持reload （可选，默认true）
        'reloadable' => true,
        // 是否开启reusePort （可选，此选项需要php>=7.0，默认为true）
        'reusePort'  => true,
        // transport (可选，当需要开启ssl时设置为ssl，默认为tcp)
        'transport'  => 'tcp',
        // context （可选，当transport为是ssl时，需要传递证书路径）
        'context'    => [],
        // 进程类构造函数参数，这里为 process\Pusher::class 类的构造函数参数 （可选）
        'constructor' => [],
        //当前进程是否启用(可选,默认true,此选项需webman-framework>=1.6.0)
        'enable' => true
    ],
    'webman' => [
        'handler' => Http::class,// 进程处理类
        'listen' => 'http://0.0.0.0:8787',// 监听地址
        'count' => cpu_count() * 4,// 进程数量，默认cpu的4倍
        'user' => '',// 进程运行的用户，应该使用低级别用户
        'group' => '',// 进程运行的用户组，应该使用低级别用户组
        'reusePort' => false,// 是否开启reusePort，开启后连接会均匀分布到不同的worker进程
        'eventLoop' => '',// 事件循环类，为空时自动使用server.event_loop配置
        'context' => [],// 监听上下文配置，例如ssl
        'constructor' => [// 进程处理类构造函数参数，本例中是Http类的构造函数参数
            'requestClass' => Request::class,// 可以自定义请求类
            'logger' => Log::channel('default'),// 日志实例
            'appPath' => app_path(),// app目录位置
            'publicPath' => public_path()// public目录位置
        ]
    ],
    // File update detection and automatic reload
    'monitor' => [
        'handler' => app\process\Monitor::class,
        'reloadable' => false,
        'constructor' => [
            // Monitor these directories
            'monitorDir' => array_merge([
                app_path(),
                config_path(),
                base_path() . '/process',
                base_path() . '/support',
                base_path() . '/resource',
                base_path() . '/.env',
            ], glob(base_path() . '/plugin/*/app'), glob(base_path() . '/plugin/*/config'), glob(base_path() . '/plugin/*/api')),
            // Files with these suffixes will be monitored
            'monitorExtensions' => [
                'php', 'html', 'htm', 'env'
            ],
            'options' => [
                'enable_file_monitor' => !in_array('-d', $argv) && DIRECTORY_SEPARATOR === '/',
                'enable_memory_monitor' => DIRECTORY_SEPARATOR === '/',
            ]
        ]
    ]
];
